home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / os2 / srefv112.zip / TEST-CGI.CMD < prev    next >
OS/2 REXX Batch file  |  1996-04-23  |  3KB  |  112 lines

  1. /***************************************************************************
  2.  *  TEST-CGI.CMD - a REXX script to test CGI interface
  3.  *
  4.  *  Author:  Frankie Fan <kfan@netcom.com>  7/11/94
  5.  *
  6.  *  $Header$
  7.  *
  8.  *  $Log$
  9.  **************************************************************************/
  10. Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  11. Call SysLoadFuncs
  12.  
  13. Parse Arg Argv
  14.  
  15.  
  16. env = "OS2ENVIRONMENT"
  17. vtab = ""
  18. lead = "<LI>"
  19. Argc = Words(Argv)
  20.  
  21. Say "Content-type: text/html"
  22. Say
  23.  
  24. Say "<H1>CGI/1.0 test script report:</H1>"  || vtab
  25.  
  26. method = value("REQUEST_METHOD",,env)
  27.  
  28. Say "<UL>"
  29.  
  30. Say lead || "argc = " Argc || vtab
  31. Say lead || "argv = " Argv || vtab
  32. Say lead || "SERVER_SOFTWARE = " value("SERVER_SOFTWARE",,env) || vtab
  33. Say lead || "SERVER_NAME = " value("SERVER_NAME",,env) || vtab
  34. Say lead || "GATEWAY_INTERFACE = " value("GATEWAY_INTERFACE",,env) || vtab 
  35. Say lead || "SERVER_PROTOCOL = " value("SERVER_PROTOCOL",,env) || vtab 
  36. Say lead || "SERVER_PORT = " value("SERVER_PORT",,env) || vtab
  37. Say lead || "REQUEST_METHOD = " method || vtab 
  38. Say lead || "HTTP_USER_AGENT = " value("HTTP_USER_AGENT",,env) || vtab 
  39. Say lead || "HTTP_ACCEPT = " value("HTTP_ACCEPT",,env) || vtab 
  40. Say lead || "PATH_INFO = " value("PATH_INFO",,env) || vtab 
  41. Say lead || "PATH_TRANSLATED = " value("PATH_TRANSLATED",,env) || vtab 
  42. Say lead || "SCRIPT_NAME = " value("SCRIPT_NAME",,env) || vtab 
  43. Say lead || "QUERY_STRING = " value("QUERY_STRING",,env) || vtab 
  44. Say lead || "REMOTE_HOST = " value("REMOTE_HOST",,env) || vtab 
  45. Say lead || "REMOTE_ADDR = " value("REMOTE_ADDR",,env) || vtab 
  46. Say lead || "REMOTE_USER = " value("REMOTE_USER",,env) || vtab 
  47. Say lead || "AUTH_TYPE = " value("AUTH_TYPE",,env) || vtab 
  48. Say lead || "CONTENT_TYPE = " value("CONTENT_TYPE",,env) || vtab
  49. len = value("CONTENT_LENGTH",,env)
  50. Say lead || "CONTENT_LENGTH = " || len || vtab   
  51.  
  52.  
  53. if (method == "GET") Then Do
  54.    query_string = value("QUERY_STRING",,env)
  55. end
  56.  
  57. If (method == "POST") & (len \= "") Then Do
  58.   /* use POST method to pass parameters */
  59.  
  60.   post_string = charin(,,len) /* read only the number specified 
  61.                                  in CONTENT_LENGTH */
  62.  
  63.   Say vtab 
  64.   Say lead || "Standard Input = " || post_string || vtab
  65.   query_string = post_string
  66. End
  67.  
  68.    NF = ParseQueryString( query_string)
  69.    Say "<UL>"
  70.    do i = 1 to NFields
  71.       Say lead || Parms.Tag.i ' = ' Parms.XVal.i || vtab
  72.    end
  73.    Say "</UL>"
  74.  
  75. Say "</UL>"
  76. return
  77.  
  78.  
  79.     /* Do not modify below this line --  Important parsing code... */
  80. ParseQueryString: procedure expose Parms. NFields
  81.   Parse arg P
  82.   i = 1
  83.   do while ((P \= '') & (i < 10))
  84.      Parse var P Parms.Text.i '&' rest
  85.      Parse var Parms.Text.i Parms.Tag.i '=' Parms.KeyVal.i
  86.      Parms.Tag.i = translate( Parms.Tag.i)
  87.      Parms.XVal.i=DecodeKeyVal( Parms.KeyVal.i)
  88.      P = rest
  89.      i = i + 1
  90.   end
  91.   NFields = i - 1
  92.   return NFields
  93.  
  94. DecodeKeyVal: procedure
  95.   parse arg Code
  96.   Text=''
  97.   Code=translate(Code, ' ', '+')
  98.   rest='%'
  99.   do while (rest\='')
  100.      Parse var Code T '%' rest
  101.      Text=Text || T
  102.      if (rest\='') then
  103.       do
  104.         ch = left( rest,2)
  105.         c=X2C(ch)
  106.         Text=Text || c
  107.         Code=substr( rest, 3)
  108.       end
  109.   end
  110.   return Text
  111.  
  112.